package com.tbgov.util;

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;

public class AESKeyUtil {

    /**
     * 生成 AES 密钥
     *
     * @param keySize 密钥长度（128、192 或 256 位）
     * @return Base64 编码的密钥字符串
     */
    public static String generateAESKey(int keySize) {
        try {
            // 创建 AES 的 KeyGenerator
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(keySize); // 初始化密钥长度
            SecretKey secretKey = keyGenerator.generateKey();
            // 将密钥编码为 Base64 格式
            return Base64.getEncoder().encodeToString(secretKey.getEncoded());
        } catch (Exception e) {
            throw new RuntimeException("生成 AES 密钥失败", e);
        }
    }

    public static void main(String[] args) {
        // 生成 128 位 AES 密钥
        String aesKey128 = generateAESKey(128);
        System.out.println("128 位 AES 密钥: " + aesKey128);

        // 生成 192 位 AES 密钥
        String aesKey192 = generateAESKey(192);
        System.out.println("192 位 AES 密钥: " + aesKey192);

        // 生成 256 位 AES 密钥
        String aesKey256 = generateAESKey(256);
        System.out.println("256 位 AES 密钥: " + aesKey256);
    }
}
